package com.kinghunt.misp.common.dto.configx;


import com.kinghunt.misp.common.annotation.Annotation;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 机构级配置
 */
@Data
public class OrgConfigDTO implements Serializable {
    private static final long serialVersionUID = 3240878015865467496L;

    /**
     * 机构ID
     */
    Long orgId;

    /**
     * ========================== 荐购 ==========================
     */
    /**
     * 荐购是否打开
     */
    @Annotation(name = "荐购是否打开", description = "true:打开; false:关闭")
    private Boolean recommendSwitch;

    /**
     * 允许荐购的角色
     */
    @Annotation(name = "允许荐购的角色", description = "允许荐购的角色，角色ID列表")
    private List<Integer> recommendRoles;

    /**
     * 荐购查重方式. 0-不查重；1-前置查重；2-后置查重
     */
    @Annotation(name = "荐购查重方式", description = "0-不查重；1-前置查重；2-后置查重")
    private Integer recommendDuplicateMethod;

    /**
     * 荐购查重数量限制
     */
    @Annotation(name = "荐购查重数量限制", description = "价格数量限制")
    private List<PriceQuantityDTO> recommendPriceLimit;

    /**
     * 荐购查重种类限制
     */
    @Annotation(name = "荐购查重种类限制", description = "种类数量限制")
    private Integer recommendKindLimit;


    /**
     * ========================== 你读书我买单 ==========================
     */
    /**
     * 活动是否打开
     */
    @Annotation(name = "荐购是否打开", description = "true:打开; false:关闭")
    private Boolean activitySwitch;

    /**
     * 活动名称
     */
    @Annotation(name = "活动名称", description = "活动名称")
    private String activityName;

    /**
     *  活动开始时间
     */
    @Annotation(name = "活动开始时间", description = "活动开始时间")
    private Date activityStartTime;

    /**
     * 活动结束时间
     */
    @Annotation(name = "活动结束时间", description = "活动结束时间")
    private Date activityEndTime;

    /**
     * 允许活动的角色
     */
    @Annotation(name = "允许活动的角色", description = "允许活动的角色，角色ID列表")
    private List<Integer> activityRoles;

    /**
     * 收货方式. 1-统一收货；2-分发收货
     */
    @Annotation(name = "收货方式", description = "1-统一收货；2-分发收货")
    private Integer activityDeliveryMethod;

    /**
     * 收货地址是否指定前缀
     */
    @Annotation(name = "收货地址是否指定前缀", description = "true:指定; false:不指定")
    private Boolean activityAddressAllocate;

    /**
     * 收货地址前缀
     */
    @Annotation(name = "收货地址前缀", description = "收货地址前缀值")
    private String activityAddressPrefix;

    /**
     * 机构活动统一收货地址
     */
    //@Annotation(name = "收货地址", description = "活动统一收货地址前")
    //private AddressDTO activityAddress;

    /**
     * 活动查重方式. 0-不查重；1-前置查重；2-后置查重
     */
    @Annotation(name = "活动查重方式", description = "0-不查重；1-前置查重；2-后置查重")
    private Integer activityDuplicateMethod;

    /**
     * 活动查重数量限制
     */
    @Annotation(name = "活动查重数量限制", description = "价格数量限制")
    private List<PriceQuantityDTO> activityPriceLimit;

    /**
     * 活动查重种类限制
     */
    @Annotation(name = "活动查重种类限制", description = "种类数量限制")
    private Integer activityKindLimit;



    /**
     * ========================== 直购 ==========================
     */
    /**
     * 直购是否审核
     */
    @Annotation(name = "是否审核", description = "true:审核; false:不审核")
    private Boolean directSwitch;

    /**
     * 直购查重方式. 0-不查重；1-前置查重；2-后置查重
     */
    @Annotation(name = "直购查重方式", description = "0-不查重；1-前置查重；2-后置查重")
    private Integer directDuplicateMethod;

    /**
     * 直购查重数量限制
     */
    @Annotation(name = "直购查重数量限制", description = "价格数量限制")
    private List<PriceQuantityDTO> directPriceLimit;

    /**
     * 直购查重种类限制
     */
    @Annotation(name = "直购查重种类限制", description = "种类数量限制")
    private Integer directKindLimit;



    /**
     * ========================== 通用配置 ==========================
     */
    /**
     * 查重馆藏文件
     */
    @Annotation(name = "查重馆藏文件", description = "查重馆藏文件")
    private List<String> duplicateCheckFiles;

    /**
     * 是否允许IP免登录
     */
    @Annotation(name = "是否允许IP免登录", description = "true:允许; false:不允许")
    private Boolean ipLoginSwitch;

    /**
     * 机构IP网段
     */
    @Annotation(name = "机构IP网段", description = "机构IP网段，该网段内用户免登录")
    private List<String> ipLoginSegment;

    /**
     * 是否允许设备登录记忆
     */
    @Annotation(name = "是否允许设备登录记忆", description = "true:允许; false:不允许")
    private Boolean loginRememberSwitch;

    /**
     * 设备登录记忆天数
     */
    @Annotation(name = "设备登录记忆天数", description = "设备登录记忆天数")
    private Integer loginRememberDay;
}
